package com.newcoder.alibaba;

import java.util.Arrays;
import java.util.Scanner;

/**
 * date:
 * description:
 */
public class Mock001 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //T表示有T组数据
        int T = sc.nextInt();
        for (int i = 1; i <= T; i++) {
            //n表示有n个物品
            int n = sc.nextInt();
            //t[i][0]表示第i个物品的x属性，t[i][1]表示第i个物品的y属性，
            int[][] t = new int[n][2];
            int[] nums = new int[n];
            for (int j = 0; j < n; j++) {
                t[j][0] = sc.nextInt();
            }
            for (int j = 0; j < n; j++) {
                t[j][1] = sc.nextInt();
            }
            //x相同的情况下y更大的排序在前面（不然的话会重复统计相同的x）
            Arrays.sort(t, (x, y) -> x[0] == y[0] ? y[1] - x[1] : x[0] - y[0]);

            for (int j = 0; j < n; j++) {
                nums[j] = t[j][1];
            }
            int result = longestSubArray(nums);
            System.out.println(result);

        }
    }

    public static int longestSubArray(int[] nums) {
        int len = nums.length;
        if (len <= 1) {
            return len;
        }
        // 贪心算法+二分查找
        // 贪心：总是记录定长序列的末尾的最小值，二分：更新最小值的方式是二分查找获取索引
        // tail 数组的定义：长度为 i + 1 的上升子序列的末尾最小是几
        int[] tail = new int[len];
        // 遍历第 1 个数，直接放在有序数组 tail 的开头
        tail[0] = nums[0];
        // end 表示有序数组 tail 的最后一个已经赋值元素的索引
        int end = 0;
        for(int i = 1; i < len; i++){
            if(nums[i] > tail[end]){
                end++;
                tail[end] = nums[i];
            }else{
                int left = 0, right = end;
                while(left < right){
                    // 左中位数，偶数长时为中间靠左一个位置，奇数长时为正中间，和left的赋值对应
                    int mid = (left + right) / 2;
                    // 找到tail中第一个大于等于num[i]的数，替换为可能更小的数，所谓贪心就是尽可能小
                    if(tail[mid] < nums[i]){
                        left = mid + 1;
                    }else{
                        right = mid;
                    }
                }
                tail[left] = nums[i];
            }
        }
        // 题目要求返回的是长度，因此 +1 后返回
        return end + 1;
    }
}
